jQuery.mask = {

	post : function(url, data, fn) {
		var _data, _fn;
		if (data) {
			if ($.isFunction(data)) {
				_fn = data;
			} else {
				_data = data;
				if (fn && $.isFunction(fn)) {
					_fn = fn;
				}
			}
		}

		var layer_index_ = layer.load(1, {
			shade : [ 0.5, '#000' ]
		});
		$.post(url, _data, function(data) {
			layer.close(layer_index_);
			if (_fn)
				_fn.call(this, data);
		});
	},

	confirm : function(msg, fn1, fn2) {
		var vars = {};
		var layerRandom = Math.floor(Math.random() * 100 + 1);
		var name = "layerDelete_" + layerRandom;
		vars[name] = layer.confirm(msg, {
			btn : [ '确定', '取消' ],
			skin : 'layui-layer-molv'
		}, function() {
			layer.close(vars[name]);
			if (fn1 && $.isFunction(fn1)) {
				if (fn1)
					fn1.call(this);
			}
		}, function() {
			layer.close(vars[name]);
			if (fn2 && $.isFunction(fn2)) {
				if (fn2)
					fn2.call(this);
			}
		});
	},
	alert : function(msg, fn) {
		var vars = {};
		var layerRandom = Math.floor(Math.random() * 1000 + 1);
		var name = "layer_" + layerRandom;
		vars[name] = layer.alert(msg, {
			skin : 'layui-layer-molv' //样式类名
			,
			closeBtn : 0
		}, function() {
			layer.close(vars[name]);
			if (fn && $.isFunction(fn)) {
				if (fn)
					fn.call(this);
			}
		});
	},
	open : function(msg, url, fn,data) {
		var vars = {};
		var layerRandom = Math.floor(Math.random() * 10000 + 1);
		var name = "layer_open_" + layerRandom;
		vars[name] = layer.open({
			type : 2,
			skin : 'layui-layer-molv',
			title : msg,
			shadeClose : true,
			shade : 0.4,
			area : (data !=null&&data.hasOwnProperty("area"))?data.area:[ '90%', '90%' ],
			content : url,
			success : function(layero, index) {//子页面加载成功后执行调用
				var iframeWin = window[layero.find('iframe')[0]['name']];
				if (fn) {
					if (!$.isFunction(fn)) {
						iframeWin.window[fn](data);
					} else {
						fn.call(this);
					}
				}
			
			}
		});
	}
	
};


/**
 * 数据字典的命名空间
 */
jQuery.fixedDict = {
	/**
	 * baseurl 属性：访问服务器取得字典数据的 url, 如果有变化，可以在脚本开始时用 : $.fixedDict.baseurl = 'myUrl' 来重新设置。
	 */
	baseurl:  '/fixedDict/',
	/**
	 * 字典中的数据集合，默认没有任何数据
	 */
	values:{
		
	},
	/**
	 * 初始化一个字典
	 * @param dictName 字典的名称
	 */
	init: function(dictName)
	{
		var baseurl = $.fixedDict.baseurl;
		if(baseurl.substring(baseurl.length - 1, baseurl.length) != '/') baseurl = baseurl + '/';
		$.ajax({
			  async:false,
              type:"POST",
              url:baseurl + dictName,
              dataType: "json",
              success:function(data){
                  $.fixedDict.set(dictName, data);
              }
          });
	},
	/**
	 * 获得一个字典数据，类型为数组, 数组中的对象属性为 name 和 value.
	 * @param dictName 字典名称
	 * @returns 对象数组
	 */
	get: function(dictName)
	{
		if($.fixedDict.values[dictName] == undefined)
		{
			$.fixedDict.init(dictName);
		}
		return $.fixedDict.values[dictName];
	},
	/**
	 * 设置一个字典数据，类型为数据
	 * @param dictName 字典名称
	 * @param data  数据
	 */
	set: function(dictName, data)
	{
		if(data == undefined || data == null)
		{
			$.fixedDict.values[dictName] = {};
		}
		else
		{
			$.fixedDict.values[dictName] = data;
		}
	},
	/**
	 * 从字典中获得和指定值对应的 label
	 * @param dictName  字典名称
	 * @param value       值
	 * @returns              字典的label
	 */
	getLabel: function(dictName, value)
	{
		var data = $.fixedDict.get(dictName);
		for(var i = 0; i < data.length; i++){
			if(value == data[i].value){
				return data[i].name;
			}
		}
	},
	setOption: function(){
		//率先执行表单结构初始化
		$(".selectpicker").each(function() {
			if ($(this).data("url")&&$(this).data("url").indexOf("dict")==0) {
				$.fixedDict.baseurl = $(this).data("url").split(":")[1] + '/fixedDict/'
				var selectdata = $.fixedDict.get($(this).data("url").split(":")[2]);
				var select = $(this);
				select.append("<option value=''></option>");
				for(var i = 0; i < selectdata.length; i++){
					select.append("<option value='"+selectdata[i].value+"'>"+selectdata[i].name+"</option>");
				}
				select.selectpicker('refresh');
			}
		});
	}
};
